#ifndef __SERIAL_H
#define __SERIAL_H

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <termios.h>
#include <errno.h>


class serial
{
public:
                                serial() {
                                    mfd = -1;
                                }
                               ~serial() {
                                }
                            int opendev(const char *node);
                     inline int closedev() {
                                    return close(mfd);
                                }
                     inline int set_baudrate(speed_t baudrate) {
                                    tcgetattr(mfd, &mtermios);
                                    cfsetospeed(&mtermios, baudrate);
                                    cfsetispeed(&mtermios, baudrate);
                                    return tcsetattr(mfd, TCSANOW, &mtermios);
                                }
                     inline int senddata(const void *__buf, size_t __n) {
                                    return write(mfd, __buf, __n);
                                }
                     inline int recvdata(void *__buf, size_t __nbytes) {
                                    return read(mfd, __buf, __nbytes);
                                }
private:
                            int mfd;
                 struct termios mtermios;
};

#endif // SERIAL_H
